package ar.maikoova.modelsControllers;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;

import javax.swing.table.DefaultTableModel;

import ar.maikoova.bd.Conector;
import ar.maikoova.bd.ParametrosConexion;
import ar.maikoova.models.ClienteInversor;
import ar.maikoova.models.Consumo;
import ar.maikoova.models.Proyecto;
import ar.maikoova.varios.Utilitario;




public class BuscarController {

	
	Conector c;
	Connection conexion;
	
	public int insert (Consumo consumo) throws SQLException{
		try{
			c = new Conector(ParametrosConexion.getParametros());
			conexion = c.getConnection();
			CallableStatement cs = conexion.prepareCall("{ call dbo.consumoCargar (?, ?, ?, ?, ?, ?, ?, ?)}");
			cs.setString(1, consumo.getCodigoConsumo());
			cs.setString(2, consumo.getCodigoProyecto());
			cs.setString(3, consumo.getDetalleConsumo());
			cs.setDouble(4, consumo.getPrecioConsumo());
			cs.setString(5, consumo.getFechaConsumo());
			cs.registerOutParameter(6, Types.INTEGER);
			cs.execute();
			return cs.getInt(6);
			
			//devuelve 1 en caso exitoso
		}catch(Exception e){
			System.out.println("Consulta erronea");
			return -1;
		}
		finally{
			conexion.close();
		}
	
	}
	public int update(ClienteInversor cliente) throws SQLException {
		//actualiza los catos de un cliente a partir de un numero de cliente- 
		try{
			c = new Conector(ParametrosConexion.getParametros());
			conexion = c.getConnection();
			CallableStatement cs = conexion.prepareCall("{ call dbo.clientesInversorCargar (?, ?, ?, ?, ?, ?, ?, ?, ?)}");
			cs.setInt(1, cliente.getNumeroCliente());
			cs.setString(2, cliente.getNombreCliente());
			cs.setString(3, cliente.getApellidoCliente());
			cs.setString(4, cliente.getDomicilioCliente());
			cs.setInt(5, cliente.getDniCliente());
			cs.setString(6, cliente.getCuilCliente());
			cs.setString(7, cliente.getNacimientoCliente());
			cs.setString(8, cliente.getTelContactoCliente());
			cs.registerOutParameter(9, Types.INTEGER);
			cs.execute();
			return cs.getInt(9);
			//devuelve 0 si no pudo realizarlo, 1 en caso exitoso
		}catch(Exception e){
			System.out.println("Consulta erronea");
			return -1;
		}
		finally{
			conexion.close();
		}
	}
	
	public int delete(ClienteInversor cliente) throws SQLException {
		//elimina un cliente a partir de un numero de cliente- 
		try{
			c = new Conector(ParametrosConexion.getParametros());
			conexion = c.getConnection();
			CallableStatement cs = conexion.prepareCall("{ call dbo.clientesInversorEliminar (?, ?)}");
			cs.setInt(1, cliente.getNumeroCliente());
			cs.registerOutParameter(2, Types.INTEGER);
			cs.execute();
			return cs.getInt(2);
			//devuelve 0 si no pudo realizarlo, 1 en caso exitoso
		}catch(Exception e){
			System.out.println("Consulta erronea");
			return -1;
		}
		finally{
			conexion.close();
		}
	}
	

	
	public ArrayList<String> todosLosProyectos() throws SQLException {
		   
		try {
			  c = new Conector(ParametrosConexion.getParametros());
			  conexion = c.getConnection();
			  Statement stmt = conexion.createStatement();
		      ResultSet rs = stmt.executeQuery("{call dbo.todosLosProyectos}");
		      
		      ArrayList<String> listaProyectos= new ArrayList<String>();
//		      DefaultTableModel modelo=new DefaultTableModel();
//		      Utilitario.rellenaCombobox(rs, combo);		      
		      while (rs.next()) { 
		          listaProyectos.add(rs.getString(2));
		      }
		      return listaProyectos;
		      		   
		      }catch (Exception e) {
		      e.printStackTrace();
		      return null;
		      }
		      finally{
				conexion.close();
		      }
	}

}
